/*!  \file  blas.h
 *	  \brief  
 * 
 *   \details   details
 *   \author    Yordan Madzhunkov German Research School for Simulation Sciences GmbH
 *   \version   1.0
 *   \date      04/30/2013 10:46:59 AM
 *   \copyright GNU Public License.
 */
#pragma once
typedef const int    * CI;
typedef       int    *  I;
typedef const double * CD;
typedef       double *  D;
typedef       char   *  C;

extern "C" {
// LEVEL 1
   void drot_  (CI,  D, CI,  D, CI, CD, CD);
   void drotg_ ( D, D, D, D);    
   void drotm_ ( CI,  D, CI,  D, CI, CD);
   void drotmg_( D, D, D,CD,  D);
   void dswap_ ( CI,  D, CI,  D, CI);
   void dcopy_ ( CI, CD, CI,  D, CI);
   void daxpy_ ( CI, CD, CD, CI,  D, CI);
   void dswap_ ( CI,  D, CI,  D, CI);
   void ddot_sub_( CI, CD, CI, CD, CI,  D);
   void dscal_ ( CI, CD,  D, CI);
   void dnrm2_sub_( CI, CD, CI,  D);
   double dnrm2_( CI, CD, CI);
   double ddot_ ( CI, CD, CI, CD, CI);
   void dasum_sub_( CI, CD, CI,  D);
   void idamax_sub_( CI, CD , CI, I);
// LEVEL 2
   void dgemv_ ( C, CI, CI, CD, CD, CI, CD, CI, CD, D, CI);
   void dgbmv_ ( C, CI, CI, CI, CI, CD, CD, CI, CD, CI, CD, D, CI);
   void dsymv_ ( C, CI, CD, CD, CI, CD, CI, CD,  D, CI);
   void dsbmv_ ( C, CI, CI, CD, CD, CI, CD, CI, CD, D, CI);
   void dspmv_ ( C, CI, CD, CD, CD, CI, CD,  D, CI);
   void dtrmv_ ( C,  C,  C, CI, CD, CI,  D, CI);
   void dtbmv_ ( C,  C,  C, CI, CI, CD, CI,  D, CI);
   void dtrsv_ ( C,  C,  C, CI, CD, CI,  D, CI);
   void dtbsv_ ( C,  C,  C, CI, CI, CD, CI,  D, CI);
   void dtpmv_ ( C,  C,  C, CI, CD,  D, CI);
   void dtpsv_ ( C,  C,  C, CI, CD,  D, CI);
   void dger_  (CI, CI, CD, CD, CI, CD, CI,  D, CI);
   void dsyr_  ( C, CI, CD, CD, CI,  D, CI);
   void dspr_  ( C, CI, CD, CD, CI,  D); 
   void dspr2_ ( C, CI, CD, CD, CI, CD, CI,  D); 
   void dsyr2_ ( C, CI, CD, CD, CI, CD, CI,  D, CI);
// LEVEL 3
   void dgemm_ ( C,  C, CI, CI, CI, CD, CD, CI, CD, CI, CD,  D, CI);
   void dsymm_ ( C,  C, CI, CI, CD, CD, CI, CD, CI, CD,  D, CI);
   void dsyrk_ ( C,  C, CI, CI, CD, CD, CI, CD,  D, CI);
   void dsyr2k_( C,  C, CI, CI, CD, CD, CI, CD, CI, CD,  D, CI);
   void dtrmm_ ( C,  C,  C,  C, CI, CI, CD, CD, CI,  D, CI);
   void dtrsm_ ( C,  C,  C,  C, CI, CI, CD, CD, CI,  D, CI);
}
